/*
**************************************************************************************************************
*										 C P U 相 关 的 硬 件 定 义 
*
*   作 者：	张进
*   版 本： V1.1
*	日 期： 2008-07-22
**************************************************************************************************************
*/

#ifndef __DEF_CPU_H__
#define __DEF_CPU_H__

 
/*
**************************************************************************************************************
*										  类 型 定 义 
**************************************************************************************************************
*/

//	typedef            void      CPU_VOID;
	typedef  unsigned  char      U08;            /*  8-bit unsigned integer                          */
	typedef    signed  char      S08;            /*  8-bit   signed integer                          */
	typedef  unsigned  short     U16;            /* 16-bit unsigned integer                          */
	typedef    signed  short     S16;            /* 16-bit   signed integer                          */
	typedef  unsigned  int       U32;            /* 32-bit unsigned integer                          */
	typedef    signed  int       S32;            /* 32-bit   signed integer                          */
	typedef            float     FP32;           /* 32-bit floating point                            */
	typedef            double    FP64;           /* 64-bit floating point       					    */


	typedef  unsigned  char      uchar;                 /* 8Bit                                             */
	typedef  unsigned  short     ushort;                /* 16Bit                                            */
	typedef  unsigned  int       uint;                  /* 32Bit                                            */

	typedef signed char     S8;
	typedef unsigned char   U8;
	typedef long long       S64;
	typedef unsigned long long U64;
	typedef unsigned char   BIT;
	typedef unsigned int    BOOL;

	/*
***************************************************************************************************
                    32位，16位，8位互换结构联合体

  注意： (1) 51里定义INT_32BIT_08BIT...时，不能定义为extern变量    而ARM里可以这样定义
         (2) 51里定义结构体高位在前，而ARM里则底位在前(小端存储模式)

         将一个数进行合并与斥开非常高效的方法
  例：
         INT_32BIT_08BIT a;
         a.Int32Bit  =  0x12345678;	  同样   a.Int08Bit.hH = 0x87;
  则：   a.Int08Bit.hH -> 0x12;				 a.Int08Bit.hL = 0x65;
         a.Int08Bit.hL -> 0x34;			  	 a.Int08Bit.h  = 0x43;
         a.Int08Bit.h  -> 0x56;				 a.Int08Bit.L  = 0x21;
		 a.Int08Bit.L  -> 0x78;		  则：   a.Int32Bit   -> 0x87654321;

***************************************************************************************************
*/
 typedef struct                  // <--------|
   {                             //          |
     U08  LL;             		 //          |
     U08  LH; 	        		 //          |
	 U08	 HL;             	 //          |
	 U08	 HH;             	 //          |32BIT与
   } INT_08BIT_4;                //          |
                                 //          |8BIT转换
 typedef union                    //          |
{                              //          |
    U32   Int32Bit;              //          |
    INT_08BIT_4  Int08Bit;       //          |
} _INT_32_08;                  // <--------|
//========>> 32位<-->8位
 typedef union                   //          |
  {	                             //          |
    U32   Int32Bit;       		 //          |
	INT_08BIT_4  Int08Bit;       //          |
  } INT_32BIT_08BIT;             // <--------|
//========>> 32位<-->8位
                                             
 typedef struct                  // <--------|
   {                             //          |
	 U16	 L;             	 //          |
	 U16	 H;            		 //          |32BIT与
   } INT_16BIT_2;                //          |
                                 //          |16BIT转换
 typedef union                   //          |
  {	                             //          |
    U32   Int32Bit;      		 //          |
	INT_16BIT_2  Int16Bit;       //          |
  } INT_32BIT_16BIT;             // <--------|
//========>> 32位<-->16位

 typedef struct                  // <--------|
   {                             //          |
	 U08	 L;             	 //          |
	 U08	 H;              	 //          |16BIT与
   } INT_08BIT_2;                //          |
                                 //          |8BIT转换
 typedef union                   //          |
  {	                             //          |
    U16   Int16Bit;      		 //          |
	INT_08BIT_2  Int08Bit;       //          |
  } INT_16BIT_08BIT;             // <--------|
//========>> 16位<-->8位

  typedef union                    //          |
   {                                //          |
     U16   Int16Bit;              //          |
     INT_08BIT_2  Int08Bit;       //          |
   } INT_16_08;  





#endif

